Skip to content

Conversation

@therepanic
Copy link
Contributor

Closes: gh-17781

@spring-projects-issues spring-projects-issues added the status: waiting-for-triage An issue we've not yet triaged label Sep 14, 2025
@therepanic
Copy link
Contributor Author

therepanic commented Sep 14, 2025

However, I believe that we can also replace SecurityExpressionHandler<FilterInvocation> in favor of SecurityExpressionHandler<RequestAuthorizationContext> in the AbstractAuthorizeTag and JspAuthorizeTag classes.

However, there is a nuance: in FilterInvocation, if we pass request parameters, a DummyRequest is created that inherits from HttpServletRequestWrapper. We could introduce the same class and pass it to RequestAuthorizationContext. What do you think about this? Where should we place such a class? I think in our case it would be enough to copy it from FilterInvocation directly into AbstractAuthorizeTag.

@jzheaux
Copy link
Contributor

jzheaux commented Oct 20, 2025

Hi, @therepanic, thanks for the PR. Can you clarify where it is that the dummy request is created, as far as JSP Tag usage is concerned? I imagine that an evaluating tag would have access to the original HttpServletRequest and not need a wrapper dummy request.

I agree that this is used in the default WebInvocationPrivilegeEvaluator; however, I believe that is the extent of it.

@therepanic
Copy link
Contributor Author

therepanic commented Nov 9, 2025

Thanks for your reply, @jzheaux. Yes, I was probably wrong.

I've thought about it now, and I think we can't replace SecurityExpressionHandler<FilterInvocation> in favor of SecurityExpressionHandler<RequestAuthorizationContext> in the AbstractAuthorizeTag and JspAuthorizeTag.

If we do that, it will be a breaking change. We can see a tests like this:

    @Test
    @SuppressWarnings(“rawtypes”)
    public void expressionFromChildContext() throws IOException {
        SecurityContextHolder.getContext().setAuthentication(new TestingAuthenticationToken(“user”, ‘pass’, “USER”));
		DefaultWebSecurityExpressionHandler expected = new DefaultWebSecurityExpressionHandler();
...

In order for this to work, I believe we need to replace DefaultWebSecurityExpressionHandler in the test, but this would again be a breaking change. If we cannot replace them, do we need to deprecate JspAuthorizeTag and AbstractAuthorizeTag?

WDYT?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status: waiting-for-triage An issue we've not yet triaged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Deprecate Authorization Logic that uses FilterInvocation

3 participants